package com.sh.数据类型等;

public class Test4 {
    public static void main(String[] args) {

        String str1= "i";
        String str2 = new String("i");
        System.out.println(str1==str2);   // false
        System.out.println(str1.equals(str2));  // true


        // 反转字符串  底层是从后往前循环   利用中间变量替换前后
        String str3 = "addsafdsae";
        StringBuffer stringBuffer = new StringBuffer(str3);
        String string = stringBuffer.reverse().toString();
        System.out.println(string);


        // 常见方法
        String str4 = "dsaflk;;jdsalk;fjsad";
        int index = str4.indexOf(";");   // 6   ;第一次出现的下标
        int index1 = str4.lastIndexOf(";");  // 14   ;最后一次出现的下标   框架中常用


        // *** intern()  String对象放到常量池
        String world = new String("world");
        String intern = world.intern();   // 返回产量池的对象
        System.out.println( intern == "world");  // true  因为都是产量池的东西
        System.out.println( world == "world");  // false
        System.out.println( world == intern);  // false

        // new String("a") + new String("b") 会创建几个对象？
        String s = new String("a") + new String("b");
        // 1 "a"   2 "b"   3 "new String("a")"   4  "new String("b")"
        // 5   拼接时会创建  StringBuilder
        // 6   最后 String s 接收又会创建一个对象在堆里面


    }
}
